package com.fy.fyspace.model.vo.picture;

import com.alibaba.fastjson.JSON;
import com.fy.fyspace.model.entity.Picture;
import io.swagger.annotations.ApiModel;
import lombok.Data;

import java.util.Date;
import java.util.List;

import static cn.hutool.core.bean.BeanUtil.copyProperties;

@Data
@ApiModel(description = "图片信息VO")
public class PictureVO {

    private String id;

    /**
     * 图片 url
     */
    private String url;

    /**
     * 图片名称
     */
    private String name;

    /**
     * 简介
     */
    private String introduction;

    /**
     * 分类
     */
    private String category;

    /**
     * 点赞数
     */
    private Integer likeCount;

    /**
     * 收藏数
     */
    private Integer favoriteCount;

    /**
     * 标签（JSON 数组）
     */
    private String tags;

    /**
     * 图片体积
     */
    private Long picSize;

    /**
     * 图片宽度
     */
    private Integer picWidth;

    /**
     * 图片高度
     */
    private Integer picHeight;

    /**
     * 图片宽高比例
     */
    private Double picScale;

    /**
     * 图片格式
     */
    private String picFormat;


    /**
     * 创建用户 id
     */
    private Long userId;

    /**
     * 创建时间
     */
    private Date createTime;


    /**
     * 更新时间
     */
    private Date updateTime;


    /**
     * 审核人 ID
     */
    private Long reviewerId;

    /**
     * 分辨率（万像素）
     */
    private double megapixels;

    /**
     * 审核状态：0-待审核; 1-通过; 2-拒绝
     */
    private Integer reviewStatus;

    /**
     * 缩略图 url
     */
    private String thumbnailUrl;


    /**
     * 图片大小 单位 Bit
     */
    private Long fileSize;

    /*
    * 是否点赞
     */
    private Integer isLike;

    /*
    * 是否收藏
     */
    private Integer isFavorite;

    public void setTagsList(List<String> tagsList) {
        this.tags = JSON.toJSONString(tagsList);
    }

    public List<String> getTagsList() {
        return JSON.parseArray(this.tags, String.class);
    }


    public static PictureVO objToVo(Picture picture) {
        PictureVO pictureVO = new PictureVO();
        copyProperties(picture, pictureVO);
        pictureVO.setId(String.valueOf(picture.getId()));
        return pictureVO;
    }
}